/**
 * @file LED.h
 * @author BadFatCat0919 (543015378@qq.com)
 * @brief LED灯驱动代码
 * @date 2022-04-06
 */

#ifndef __LED_H__
#define __LED_H__

#include <Arduino.h>

/**
 * @brief LED灯
 */
class LED {
public:
  /**
 * @brief 创建一个新的LED对象
 * @param pin 使用的引脚（默认为板载LED，使用D4）
 * @param onLevel LED开启时的引脚电平（默认为低电平）
   */
  LED(uint8_t pin = D4, uint8_t onLevel = LOW);
  /**
   * @brief 销毁一个已创建的LED对象
   */
  ~LED(void);
  /**
   * @brief 初始化LED
   * @return LED& 自身的引用
   */
  LED &init(void);
  /**
   * @brief 打开LED
   * @return LED& 自身的引用
   */
  LED &on(void);
  /**
   * @brief 打开LED，并在指定时间后关闭
   * @param time 打开的时间
   * @return LED& 自身的引用
   */
  LED &on(unsigned long time);
  /**
   * @brief 关闭LED
   * @return LED& 自身的引用
   */
  LED &off(void);

protected:
  uint8_t _pin, _onLevel;

};

#endif // __LED_H__
